﻿/*
API=CustomFunc_QZSel
Tips=获取数据，可兼容热键
Author=Array、Kawvin、LL
Version=0.3
*/

/*
    函数: CustomFunc_QZSel
        此 API 用来获取选中的数据，兼容菜单和热键。

    参数:
        aParam - 无需参数

    返回:
        必然更新数据到全局的 gMenuZ.Data 对象，同时以赋值方式返回到用户指定的对象。

    作者: Array、Kawvin、LL

    版本: 0.3
*/

CustomFunc_QZSel(Caller:="MenuItem",strMatch:="") { ; Caller 代表调用函数方，参数值可为以下字符串："Filter"(或"筛选器") / "DynamicalMenuItem"(或"动态菜单") / "MenuItem"(或"菜单项")
    global gMenuZ,gQZConfig
    
    if % gMenuZ.ByMessager or gMenuZ.BySendTo
    {
        if Caller=MenuItem
        {
            gMenuZ.BySendTo:=0
            gMenuZ.ByMessager:=0
        }
        return gMenuZ.Data
    }
    
    gMenuZ.ByMenu:=false
    
    for hk , objHK in gQZConfig.Hotkeys
	{
        ;~ msgbox % A_ThisHotkey "`n" hk
		if A_ThisHotkey in %hk%,~LButton & RButton,~!q ;如果最后一组热键是在 QuickZ 全局设置中注册的热键
        {
            ;~ ToolTip, 是菜单调用
            gMenuZ.ByMenu:=true ;则记录最后一次获取数据是从菜单触发
            break
        }
	}
    
    ;~ msgbox % gMenuZ.DataGot
    gMenuZ.ByHotkey:=!gMenuZ.ByMenu ;这是一对相反值
    if gMenuZ.ByHotkey
    {
        ;~ ToolTip 是热键调用
        if !gMenuZ.DataGot
        {
            gMenuZ.Data := QZ_GetData()         ;调用Ahk文件：QZ_API.ahk，作用：初始化
            CustomFunc_QZ_GetClip(gMenuZ.Data)     ;调用Ahk文件：QZ_API.ahk，作用：获取剪切板数据，并对文件类型进行预处理
            QZ_GetWinInfo(gMenuZ.Data)    ;调用Ahk文件：QZ_API.ahk，作用：获取当前窗口信息
        }
	}

	if strMatch
		gMenuZ.Data.files:=CustomFunc_QZSelParse(QZSel.files,strMatch)

	return gMenuZ.Data
}

CustomFunc_QZSelParse(objFile,strMatch:="")
{
	objFile := new QZ_LabelFile(objFile)
	return objFile.Parse(strMatch)
}